<?php
use think\facade\Request;
/***
 * @Author Vee7
 * @Date 2021/12/14
 * @Time 16:56
 * @Description 返回符合layui格式的json数据
 */
function layuiJson($code=0,$msg='',$data=null,$count=null)
{
    $json = [
        'code' => $code,
        'msg'   => $msg,
        'count' => $count,
        'data' => $data,
    ];
    return json($json);
}

/***
 * @param $dir
 * @Author Vee7
 * @Date 2021/12/17
 * @Time 14:27
 * @Description 根据目录删除所有文件
 */
function delFileByDir($dir)
{
    $dh = opendir($dir);
    while($file = readdir($dh)){
        if($file != "." && $file != ".."){
            $fullpath = $dir."/".$file;
            if(is_dir($fullpath)){
                delFileByDir($fullpath);
            }else{
                unlink($fullpath);
            }
        }
    }
    closedir($dh);
}

/**
 * 无限分类-菜单
 * @param  $cate     array    分类数据
 * @param  $joinStr  string   连接符
 * @param  $pid      int      父ID
 * @param  $level    int      级别
 * @return array
 */
function treeMenu($cate , $joinStr = "|— "  , $pid = 0 , $level = 0 ){
    $arr = array();
    $str = '';
    foreach($cate as $k => $v){
        if($v['parent_id'] == $pid) {
            if($level == 0){ //判断是否是第一级分类
                $joinStr = '';
            }else{
                //样式一：
                $str = str_repeat('——',$level);
                $joinStr = '<span>|'.$str.' </span>';
                //样式二：
                //$joinStr = '<span style="padding-left:'.($level*20).'px;">|'.$str.' </span>';
            }
            $v['menu_level'] = $level + 1;
            $v['title'] = $joinStr.$v['title'];
            $arr[] = $v;
            unset($cate[$k]); //删除该节点，减少递归的消耗
            $arr = array_merge($arr, treeMenu($cate, $joinStr, $v['id'], $level + 1));
        }
    }
    return $arr;
}

/**
 * 格式化字节大小
 * @param  number $size      字节数
 * @param  string $delimiter 数字和单位分隔符
 * @return string            格式化后的带单位的大小
 */
function format_bytes($size, $delimiter = '') {
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
    for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
    return round($size, 2) . $delimiter . $units[$i];
}

/***
 * @param $arr
 * @param $key
 * @return array
 * @Author Vee7
 * @Date 2021/12/22
 * @Time 17:53
 * @Description 给二维数组按照指定key分组
 */
function array_group_by($arr, $key)
{
    $grouped = [];
    foreach ($arr as $value) {
        $grouped[$value[$key]][] = $value;
    }
    if (func_num_args() > 2) {
        $args = func_get_args();
        foreach ($grouped as $key => $value) {
            $parms = array_merge([$value], array_slice($args, 2, func_num_args()));
            $grouped[$key] = call_user_func_array('array_group_by', $parms);
        }
    }
    return $grouped;
}

/***
 * @param $arr
 * @param $keys
 * @param string $orderby
 * @return array
 * @Author Vee7
 * @Date 2021/12/23
 * @Time 9:59
 * @Description 数组按照指定字段排序
 */
function array_sort($arr,$keys,$orderby='asc'){
    $keysvalue = $new_array = array();
    foreach ($arr as $k=>$v){
        $keysvalue[$k] = $v[$keys];
    }
    if($orderby== 'asc'){
        asort($keysvalue);
    }else{
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k=>$v){
        $new_array[] = $arr[$k];
    }
    return $new_array;
}